home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1999 March / EnigmA AMIGA RUN 35 (1999)(G.R. Edizioni)(IT)[!][issue 1999-03].iso / earcd / devel / libx11 / include / x11 / xmp / tablep.h < prev    next >
C/C++ Source or Header  |  1999-01-01  |  7KB  |  200 lines

  1. #ifndef _XmpTableP_h
  2. #define _XmpTableP_h
  3. #include <X11/Xmp/COPY>
  4.  
  5. /*
  6.  * SCCS_data:    @(#) TableP.h    1.7 92/06/10 06:13:59
  7.  *
  8.  * XmpTable -    Forms-based composite widget/geometry manager derived from
  9.  *        Motif manager widgets.  Class heirarchy:
  10.  *            Core
  11.  *            Composite
  12.  *            Constraint
  13.  *            XmManager
  14.  *            XmBulletinBoard
  15.  *            XmpTable
  16.  *
  17.  * Originally implemented by:
  18.  *    David Harrison
  19.  *    University of California, Berkeley
  20.  *    1989
  21.  *
  22.  * Many bug fixes and enhancements provided by
  23.  *    marbru@auto-trol.com    Martin Brunecky
  24.  *    nazgul@alphalpha.com    Kee Hinckley
  25.  *    pastor@PRC.Unisys.COM    Jon A. Pastor
  26.  *
  27.  * Completely re-implemented by:
  28.  *    David.Smyth@SniAP.MchP.SNI.De
  29.  */
  30.  
  31. #include <X11/Xmp/Table.h>
  32. #include <X11/Xm/XmP.h>
  33. #include <X11/Xm/BulletinBP.h>
  34.  
  35. /* Method definitions
  36. **====================**
  37.    No new methods.  I can't imagine how anyone is going to sub-class
  38.    THIS Widget, as the coupling between the behavior and the instance
  39.    members is rather intense!
  40. */
  41.  
  42. /* XmpTable Class Part: Information kept in class record
  43. **=======================================================**
  44. */
  45.  
  46. typedef struct _XmpTableClassPart {
  47.     caddr_t            extension;
  48. } XmpTableClassPart;
  49.  
  50. /* Class hierarchy
  51. **=================**
  52. */
  53.  
  54. typedef struct _XmpTableClassRec {
  55.     CoreClassPart        core_class;
  56.     CompositeClassPart        composite_class;
  57.     ConstraintClassPart        constraint_class;
  58.     XmManagerClassPart        manager_class;
  59.     XmBulletinBoardClassPart    bulletin_class;
  60.     XmpTableClassPart        table_class;
  61. } XmpTableClassRec;
  62.  
  63. extern XmpTableClassRec xmpTableClassRec;
  64.  
  65.  
  66. /* Private data types
  67. **====================**
  68.    All of these structures are often used as elements of null terminated arrays.
  69. */
  70.  
  71. /* Table Location structs.
  72. **========================**
  73.    These are used to describe each widget location, in both the
  74.    default_layout and the real_layout.  In the default_layout, the
  75.    location structs contain a quark, in the real_layout they contain the
  76.    actual widget and the orig* fields are set.
  77. */
  78. typedef struct _XmpTableLoc {
  79.     XrmQuark        w_quark;        /* Widget name quark    */
  80.     Widget        w;            /* actual widget    */
  81.     int            col, row;        /* Position in table    */
  82.     int            col_span, row_span;    /* Positions spanned    */
  83.     int            orig_width, orig_height;/* Childs orig size    */
  84.     XmpTableOpts    options;        /* Child layout options    */
  85. } XmpTableLocRec;                /*     *XmpTableLoc    */
  86.  
  87. /* XmpTableLoc Methods
  88. **=====================**
  89. */
  90. extern XmpTableLoc XmpTableLocNew      _(( int /*num*/ ));
  91. extern XmpTableLoc XmpTableLocGrow      _(( XmpTableLoc ));
  92. extern XmpTableLoc XmpTableLocCopy      _(( XmpTableLoc ));
  93. extern XmpTableLoc XmpTableLocParse      _(( char* /*layout*/ ));
  94. extern XmpTableLoc XmpTableLocFind      _(( XmpTableLoc, Widget /*toFind*/ ));
  95. extern XmpTableLoc XmpTableLocFindDefault _(( XmpTableLoc, Widget /*toFind*/ ));
  96. extern XmpTableLoc XmpTableLocFindAtPosition _((XmpTableLoc,int/*c*/,int/*r*/));
  97. extern int  XmpTableLocLen        _(( XmpTableLoc ));
  98. extern int  XmpTableLocPreferredWidth    _(( XmpTableLoc, int /*shrink*/ ));
  99. extern int  XmpTableLocPreferredHeight    _(( XmpTableLoc, int /*shrink*/ ));
  100. extern int  XmpTableLocNumCols        _(( XmpTableLoc ));
  101. extern int  XmpTableLocNumRows        _(( XmpTableLoc ));
  102. extern int  XmpTableLocCompareColSpan    _(( XmpTableLoc, XmpTableLoc ));
  103. extern int  XmpTableLocCompareRowSpan    _(( XmpTableLoc, XmpTableLoc ));
  104. extern void XmpTableLocFree _(( XmpTableLoc ));
  105.  
  106. /* Table Vector Structs
  107. **======================**
  108.    A table has two of these vectors: one for columns, and one for rows.
  109. */
  110. typedef int XmpTableVectorOpts;
  111. #define    TBL_VEC_MINIMIZE    0x01
  112. #define    TBL_VEC_LOCK        0x02
  113. #define    TBL_VEC_NOGROW        (TBL_VEC_MINIMIZE | TBL_VEC_LOCK)
  114.  
  115. typedef struct _XmpTableVector {
  116.     XmpTableVectorOpts    options;    /* Apply to entire col or row    */
  117.     int            value;        /* width of col, hieght of row    */
  118.     int            pref_value;    /* minimum or preferred value    */
  119.     int            offset;        /* of upper left corner of cell    */
  120. } XmpTableVectorRec, *XmpTableVector;
  121.  
  122. /* XmpTableVector Methods
  123. **========================**
  124. */
  125. #define TABLE XmpTableWidget
  126. #define DO_COL (int)1
  127. #define DO_ROW (int)0
  128.  
  129. extern XmpTableVector XmpTableVectorNew _(( int, TABLE, int ));
  130. extern void XmpTableVectorFree _(( XmpTableVector ));
  131. extern void XmpTableVectorMinimize _(( XmpTableVector, int, TABLE, int));
  132. extern int  XmpTableVectorTotalSize _(( XmpTableVector, int, TABLE, int));
  133. extern int  XmpTableVectorPreferredSize _(( XmpTableVector, int, TABLE, int));
  134. extern void XmpTableVectorAdjust _(( XmpTableVector, int /*len*/, int /*amt*/));
  135. extern void XmpTableVectorComputeOffsets _(( XmpTableVector, int, int, int ));
  136.  
  137. #undef TABLE
  138.  
  139. typedef enum _ResizeStatus { RSinit, RSdone, RSdueToRequest } ResizeStatus;
  140.  
  141. /* XmpTable Part: Information kept in instance record
  142. **====================================================**
  143. */
  144.  
  145. typedef struct _XmpTablePart {
  146.     /* controlling members, set by SetValues or from resource database
  147.     */
  148.     Boolean        force_shrink;    /* Shrink smaller than pref'd    */
  149.     Boolean        shrink_simple;    /* Shrink simple widgets    */
  150.     int            col_spacing;    /* Space between columns    */
  151.     int            row_spacing;    /* Space between rows        */
  152.     XmpTableOpts    default_options;/* Default child layout options    */
  153.     XmpTableLoc        default_layout;    /* Layout spec (orig from xrdb)    */
  154.  
  155.     /* internally computed members
  156.     */
  157.     XmpTableLoc        real_layout;    /* Computed current layout    */
  158.     int            num_cols;    /* Number of columns        */
  159.     XmpTableVector    cols;        /* Widths and opts of each col    */
  160.     int            num_rows;    /* Number of rows        */
  161.     XmpTableVector    rows;        /* Heights and opts of each row    */
  162.  
  163.     /* State indications
  164.     */
  165.     ResizeStatus    resizeStatus;    /* if Resize method invoked    */
  166.  
  167. } XmpTablePart;
  168.  
  169. /* Instance hierarchy
  170. **====================**
  171. */
  172.  
  173. typedef struct _XmpTableRec {
  174.     CorePart        core;
  175.     CompositePart    composite;
  176.     ConstraintPart    constraint;
  177.     XmManagerPart    manager;
  178.     XmBulletinBoardPart    bulletin_board;
  179.     XmpTablePart    table;
  180. } XmpTableRec;
  181.  
  182. /* Geometry Management Support Methods
  183. **=====================================**
  184. */
  185. extern void XmpTableNewLayout _(( XmpTableWidget ));
  186. extern void XmpTableRecomputeLayout _(( XmpTableWidget ));
  187. extern void XmpTableResizeLayout _(( XmpTableWidget ));
  188.  
  189. extern void XmpTableNewRealLayout _(( XmpTableWidget ));
  190. extern void XmpTableAppendToDefaultLayout _(( XmpTableWidget, XmpTableLoc ));
  191. extern void XmpTableNewColsAndRows _(( XmpTableWidget ));
  192. extern void XmpTableMakeColsFitWidth _(( XmpTableWidget ));
  193. extern void XmpTableMakeRowsFitHeight _(( XmpTableWidget ));
  194. extern int  XmpTablePreferredWidth _(( XmpTableWidget ));
  195. extern int  XmpTablePreferredHeight _(( XmpTableWidget ));
  196. extern void XmpTableRequestResize _(( XmpTableWidget ));
  197. extern void XmpTableSetGeometryOfChildren _(( XmpTableWidget ));
  198.  
  199. #endif /* _XmpTableP_h */
  200.